/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/16 16:51
 */

//小美定义以下三种单词是合法的：
//1. 所有字母都是小写。例如：good
//2. 所有字母都是大写。例如：APP
//3. 第一个字母大写，后面所有字母都是小写。例如：Alice
//现在小美拿到了一个单词，她每次操作可以修改任意一个字符的大小写。小美想知道最少操作几次可以使得单词变成合法的？
//
//输入描述
//  一个仅由大写字母和小写字母组成的字符串，长度不超过10^5。
//输出描述
//  一个整数，代表操作的最小次数。
//
//示例 1
//输入
//AbC
//输出
//1
//说明
//  变成 ABC 或者 Abc 均可。只需要一次操作。

#include <iostream>
#include <string>

using namespace std;

int op1(const string &s) {
    int ans = 0;
    for (char i: s) {
        if (i >= 'A' && i <= 'Z') ans++;
    }
    return ans;
}

int op2(const string &s) {
    int ans = 0;
    for (char i: s) {
        if (i >= 'a' && i <= 'z') ans++;
    }
    return ans;
}

int op3(const string &s) {
    int ans = (s[0] >= 'A' && s[0] <= 'Z') ? 0 : 1;
    for (int i = 1; i < s.size(); i++) {
        if (s[i] >= 'A' && s[i] <= 'Z') ans++;
    }
    return ans;
}

int main() {
    string s;
    cin >> s;
    if (s.empty()) return 0;
    int res = 0x3f3f3f3f;
    res = min(res, op1(s));
    res = min(res, op2(s));
    res = min(res, op3(s));
    printf("%d", res);
}